﻿// Doc-Encode UTF8-BOM, Space(4), Unix(LF)
#include "himpp_v4.h"
#include "klbthird/sds.h"
#include "himpp_extension.h"
#include "hiobj.h"
#include "hiobj_in.h"


//////////////////////////////////////////////////////////////////////////
// 动态库 初始化/反初始化

/// @class CHimppV4Main
/// @brief 仅用于动态库 全局 初始化/反初始化, 勿做其他用途
///   本动态库需要提前全局初始化的均在此完成
class CHimppV4Main
{
public:
    CHimppV4Main();
    ~CHimppV4Main();
};

CHimppV4Main::CHimppV4Main()
{
    // 全局初始化
}

CHimppV4Main::~CHimppV4Main()
{
    // 全局反初始化

}


static CHimppV4Main g_himpp_v4_main;    ///< 仅用于动态库 全局 初始化/反初始化, 勿做其他用途


//////////////////////////////////////////////////////////////////////////
// himpp_v4

static int himpp_v4_NewObj(lua_State* L)
{
    const char* p_name = luaL_checkstring(L, 1);

    hiobj_t* p_obj = new_hiobj(L, p_name);
    assert(NULL != p_obj);

    return 1;   // 1 个返回值
}

KLB_API int luaopen_himpp(lua_State* L)
{
    static luaL_Reg lib[] =
    {
        { "NewObj",         himpp_v4_NewObj },

        { NULL,             NULL }
    };

    // 创建导出库函数
    luaL_newlib(L, lib);

    // meta HIMPP_OBJ_HANDLE
    createmeta_hiobj_handle(L);

    return 1;
}
